/***************************************************************************
 创建者: 华磊
 开始时间: 2018.8.14
 copyright: (C) 华友高科
 修改说明: (每次有修改就添加一条，带有 修改人，修改时间，修改描述)
 example (1) hualei 2017.5.8 类的具体实现代码编写

 ***************************************************************************
 *  @file x.h
 *  功能:
 *
 *                                                                         *
 ***************************************************************************/
#ifndef MEMORYINFORMATION_H
#define MEMORYINFORMATION_H

#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <string.h>
#include <stdlib.h>


typedef struct CPU_PACKED         //定义一个cpu occupy的结构体
{
char name[20];             //定义一个char类型的数组名name有20个元素
unsigned int user;        //定义一个无符号的int类型的user
unsigned int nice;        //定义一个无符号的int类型的nice
unsigned int system;    //定义一个无符号的int类型的system
unsigned int idle;         //定义一个无符号的int类型的idle
unsigned int iowait;
unsigned int irq;
unsigned int softirq;
}CPU_OCCUPY;

typedef struct MEM_PACKED         //定义一个mem occupy的结构体
{
        char name[20];      //定义一个char类型的数组名name有20个元素
        unsigned long total;
        char name2[20];
}MEM_OCCUPY;

typedef struct DEV_MEM         //定义一个mem occupy的结构体
{
        double total,used_rate;//MB , %
}DEV_MEM;

typedef struct MEM_PACK         //定义一个mem occupy的结构体
{
        double total,used_rate;//MB , %
}MEM_PACK;
/**
 * @brief The MemoryInformation class 系统存储信息类
 */
class MemoryInformation
{
public:
    MemoryInformation();
public:
    double getCpuRate();//获取CPU的利用率
    MEM_PACK get_memoccupy(); // get RAM message
    DEV_MEM get_devmem();//获取硬盘使用率
    DEV_MEM get_devmem2();//获取硬盘使用率
private:
    double cal_cpuoccupy (CPU_OCCUPY *o, CPU_OCCUPY *n) ;
    void get_cpuoccupy (CPU_OCCUPY *cpust);
};

#endif // MEMORYINFORMATION_H
